// store中的state必须要暴露出去，state表单存放数据的对象（state属性名是固定）
export const state=  ()=> {
    return {
        userInfo : {
            token: "",
            user: {}
        }
    }
}

// mutations是用于同步修改state里面的数据
// getUserInfo是用来修改state.userInfo的值，函数名可以修改的
// 参数state是必须要添加的，可以通过state修改数据
export const mutations= {
    setUserInfo(state,data){
        state.userInfo= data
    }
}

// 异步修改state的数据
export const actions = {
    // 登录方法
    login(store,data){
        return this.$axios({
            url: '/accounts/login',
            method: 'post',
            data,
        }).then(res=>{
            // console.log(res)
            // 存储数据到store, vuex不能直接修改store的值
            // 调用mutations下的方法修改userInfo,调用时候传入res.data,res.data是我们需要数据
            store.commit('setUserInfo',res.data)
            // 获取store中数据,this.$store.state或访问到store下所有文件,user就是store的一个文件
            // $store.state.user.userInfo
        })
    },
    // 发送验证码
    sendCaptcha(store,tel){
        return this.$axios({
            url: '/captchas',
            method:'post',
            data: tel
        }).then(res=>{
            const {code} = res.data
            return code
            
        })

    },
    // 注册
    register(store,props){
        return this.$axios({
            url: '/accounts/register',
            method: 'post',
            data: props
        }).then(res=>{
            const {data} = res
            store.commit('setUserInfo',data);
            
        })
    }
}